package com.ssm.controller;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.omg.CORBA.INTERNAL;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.ssm.service.UserService;
import com.ssm.vo.User;

@Controller
@RequestMapping("/User")
//控制器
public class UserController {
	@Autowired
	private UserService userservice;
	
	private String userName;
	private String userPassword;
	
	/**
	 * 注册
	 * @param u
	 * @param userName 
	 * @return
	 */
	@RequestMapping("/add_user")
	public ModelAndView add_user(User u_add) {
		//构造ModelAndView对象
		ModelAndView add= new ModelAndView();
		//获取前台账号
		String userName=u_add.getUserName();
		//获取前台密码
		String userPassword=u_add.getUserPassword();
		//获取数据库账号
		User user_add=userservice.login_user(userName);
		//判断数据库账号不等于null且不等于空值
		if (user_add!=null &&!user_add.equals("")) {
			//数据库已存在此账号，反馈信息给前台
			add.addObject("register_tips", "用户已存在！");
			//加载页面
			add.setViewName("Register");
		}else {
			//调用接口，执行SQL语句，存储数据至数据库。
			userservice.add_user(u_add);
			//存储数据库成功，反馈信息给前台
			add.addObject("login_tips", "注册成功！");
			//加载页面
			add.setViewName("Login");
		}
		//返回的模型和视图
		return add;	
	}
	/**
	 * 登录
	 * @param userName
	 * @param userPassword 
	 * @return
	 */
	@RequestMapping("/login_user")
	public ModelAndView login_user(@RequestParam("userName")String userName,@RequestParam("userPassword")String userPassword) {
		//构造ModelAndView对象
		ModelAndView login=new ModelAndView();
		//获取数据库账号
		User user_login=userservice.login_user(userName);
		//判断数据库账号不等于null
		if (user_login!=null) {
			//数据库账号不等于null,判断数据库密码与前台密码是否匹配。
			if (user_login.getUserPassword().equals(userPassword)) {
				//密码相同，反馈信息给前台
				login.addObject("login_tips", "登录成功");
				//加载页面
				login.setViewName("Uploading");
			} else {
				//密码不同，反馈信息给前台
				login.addObject("login_tips", "密码错误！");
				//加载页面
				login.setViewName("Login");
			}
			
		} else {
			//数据库账号等于null,反馈信息给前台
			login.addObject("login_tips", "该用户不存在，请注册！");
			//加载页面
			login.setViewName("Login");
		}
		//返回的模型和视图
		return login;	
	}
	
	/**
	 *管理员_查看所有账户(方法一：查询所有用户和分页。方法二：查询账户总条数。)
	 * @ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中。
	 * @param userName
	 * @param page
	 * @return query_user
	 */
	@RequestMapping("/query_user")
	public @ResponseBody List<User> query_user(@RequestParam("userName") String userName,@RequestParam("page") int page){
		//构造ArrayList函数
		List<User> query_user=new ArrayList<User>();
		//调用接口，执行SQL语句，查询数据库账户。
		query_user=userservice.query_user(userName, page);
		//返回query_user
		return query_user;	
	};
	@RequestMapping("/query_user_count")
	public @ResponseBody int query_user_count(String userName) {
			
		return userservice.query_user_count(userName);	
	}
	
	
	
	
	/**
	 * 管理员_修改用户账户_(方法一：根据id跳转到指定页面。方法二：在指定页面修改用户信息。)
	 * @param userID
	 * @return update_user_jump
	 */
	@RequestMapping("/update_user_jump")
	public ModelAndView update_user_jump(@RequestParam("userID")int userID) {
		//构造ModelAndView对象
		ModelAndView update_user_jump=new ModelAndView();
		//构造函数创建一个User对象
		User uu=new User();
		//调用接口，执行SQL语句，查询数据ID
		uu=userservice.update_user_jump(userID);
		//反馈信息给前台
		update_user_jump.addObject("userID", userID);
		update_user_jump.addObject("userName", uu.getUserName());
		update_user_jump.addObject("userPassword", uu.getUserPassword());
		update_user_jump.addObject("userType", uu.getUserType());
		//指定跳转的页面
		update_user_jump.setViewName("HomePage");
		return update_user_jump;	
	}
	/**
	 * 管理员_修改用户账户_在指定页面修改用户信息
	 * @param 
	 * @return update_user
	 */
	@RequestMapping("/update_user")
	public ModelAndView update_user(User u_update) {
		//构造ModelAndView对象
		ModelAndView update_user=new ModelAndView();
		//调用接口，执行SQL语句，修改账户信息
		int update=userservice.update_user(u_update);
		//判断update是否为1，是或否。
		if (update==1) {
			//构造函数创建一个User对象
			User uu=new User();
			//调用接口，执行SQL语句，修改对应ID数据。
			uu=userservice.update_user_jump(u_update.getUserID());
			//反馈信息给前台
			update_user.addObject("userName", uu.getUserName());
			update_user.addObject("userPassword", uu.getUserPassword());
			update_user.addObject("userType", uu.getUserType());
			update_user.addObject("xinxi", "修改成功！");
			//指定跳转的页面
			update_user.setViewName("HomePage");
		}else {
			//反馈信息给前台
			update_user.addObject("xinxi", "修改失败！");
			//指定跳转的页面
			update_user.setViewName("HomePage");
		}
		return update_user;		
	};
	
	
	
	/**
	 * 管理员_删除用户账户
	 * @param userID
	 * @return delete_user
	 */
	@RequestMapping("/delete_user")
	public ModelAndView delete_user(@RequestParam("userID") int userID) {
		//构造ModelAndView对象
		ModelAndView delete_user= new ModelAndView();
		//调用接口，执行SQL语句，删除数据库ID对应的数据。
		int delete=userservice.delete_user(userID);
		//判断delete是否为1，是或否。
		if (delete==1) {
			delete_user.addObject("xinxi", "删除成功!");
			delete_user.setViewName("HomePage");
		}else {
			delete_user.addObject("xinxi", "删除失败!");
			delete_user.setViewName("HomePage");
		}
		//返回的模型和视图
		return delete_user;
	};
	
}
